gdk: Add GDK_WINDOW_SUBSURFACE window type
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 21 Aug 2014 15:26:18 +0000 (17:26 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 26 Aug 2014 10:58:13 +0000 (12:58 +0200)
This window type can only be used on wayland so far, so NULL is returned
if it's attempted to be used on any other windowing backend.

https://bugzilla.gnome.org/show_bug.cgi?id=729215

gdk/gdkwindow.c
gdk/gdkwindow.h

index 04e3d0a27bdb52a69459a415b9aae2d0f5988304..f7a4531091d38b9ef777628f78a08935285d818a 100644 (file)
 /* for the use of round() */
 #include "fallback-c89.c"
 
+#ifdef GDK_WINDOWING_WAYLAND
+#include "wayland/gdkwayland.h"
+#endif
+
 #undef DEBUG_WINDOW_PRINTING
 
 
@@ -1294,6 +1298,15 @@ gdk_window_new (GdkWindow     *parent,
        g_warning (G_STRLOC "Toplevel windows must be created as children of\n"
                   "of a window of type GDK_WINDOW_ROOT or GDK_WINDOW_FOREIGN");
       break;
+    case GDK_WINDOW_SUBSURFACE:
+#ifdef GDK_WINDOWING_WAYLAND
+      if (!GDK_IS_WAYLAND_DISPLAY (display))
+        {
+          g_warning (G_STRLOC "Subsurface windows can only be used on Wayland");
+          return NULL;
+        }
+#endif
+      break;
     case GDK_WINDOW_CHILD:
       break;
     default:
index 23a317a996917e3564d6332ce918df7e874833ea..c7ec15c17f677b398d04911d170d2eacea3ca5c9 100644 (file)
@@ -68,6 +68,9 @@ typedef enum
  * @GDK_WINDOW_FOREIGN: foreign window (see gdk_window_foreign_new())
  * @GDK_WINDOW_OFFSCREEN: offscreen window (see
  *  [Offscreen Windows][OFFSCREEN-WINDOWS]). Since 2.18
+ * @GDK_WINDOW_SUBSURFACE: subsurface-based window; This window is visually
+ *  tied to a toplevel, and is moved/stacked with it. Currently this window
+ *  type is only implemented in Wayland. Since 3.14
  *
  * Describes the kind of window.
  */
@@ -78,7 +81,8 @@ typedef enum
   GDK_WINDOW_CHILD,
   GDK_WINDOW_TEMP,
   GDK_WINDOW_FOREIGN,
-  GDK_WINDOW_OFFSCREEN
+  GDK_WINDOW_OFFSCREEN,
+  GDK_WINDOW_SUBSURFACE
 } GdkWindowType;
 
 /**